package thread;

public class TestDemo11 {
    public static void main(String[] args) throws InterruptedException {

        Thread t = new Thread() {
            @Override
            public void run() {
                for (int i = 0; i < 5; i++) {
                    System.out.println("hello thread");
                    // 获取当前线程的名字
                    System.out.println(Thread.currentThread().getName());
                    // 通过 this,该类继承Thread类,可以获取到 Thread类的对象
                    System.out.println(this.getName());
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        t.start();
        // 在主线程中等待操作,等待 t 线程的执行结束
        t.join(3000);// 让 main等待 t,调用后,main线程被阻塞
        // 指定等待时间,最多等待指定的时间
        // 3s内t线程结束,就继续执行 main线程
        // 3s后还没结束,就不等了,直接执行 main线程
        for (int i = 0; i < 5; i++) {
            System.out.println("hello main");
            Thread.sleep(1000);
        }

        // 获取到当前线程的实例,谁调用该方法就获取谁的实例
        // 比如这里是在 main线程中调用,拿到的是 main线程的实例
        Thread.currentThread();
    }
}
